Software and hardware devices are routinely used as protocol controllers, to manage the flow of data packets moving between various components of one or more electronic processors. Protocol controllers normally transmit the packets arranged in fixed groups of buffers that are linked together via linked lists. The linked lists describe how the groups of buffers relate to each other. The host processor in these systems typically carries out all the computational tasks required to modify the stream of packets being sent, for example in response to an asynchronous event. This extracts a large computational penalty on the host CPU, and may slow down the performance of the system.
The protocol controllers described above are often used while testing devices, such as computer chips, software modules, and hardware systems embedded with software instructions, among others. Testing is carried out extensively during development of these devices, to ensure that the product shipped to the consumers performs as expected, and that no erroneous results are produced under a variety of different operating conditions. When the host CPU of a system is used to carry out the functions described above, the entire process slows down, particularly when the stream of packets is interrupted due to an asynchronous event. This lengthens considerably the debugging and development time of the system.
A common standard used to debug and test computational systems is the Joint Test Action Group (JTAG) standard, also known as the IEEE Standard 1149.1. This standard specifies how to control and monitor the electronic components of compliant devices on a printed integrated circuit (IC) board. The JTAG protocol contains the controls necessary to read and to set the values of the internal registers of the devices being tested in a process known as boundary scanning. The testing of IC boards is simplified by using the JTAG protocol, since signals and data which are not normally available at the connectors of the IC board can be read and set using the JTAG access port. The protocol also allows testing of equipment connected to the port, to identify the components found on the board, and to control and monitor the device's output.